import csv


class Csv:
    @staticmethod
    def iter_csv(get_row_func, ignore_row_func, from_cell: int, file_path: str) -> list:
        """
        获取数据
        注意：日期数据
        1：作为日期类型
        日期转为日期格式 "%Y-%m-%d %H:%M:%S"
        2：作为数字类型
        通常，‌Excel 中的日期以特定的数字格式存储，‌表示自某个固定日期（‌如 1900 年 1 月 1 日或 1904 年 1 月 1 日，‌取决于 Excel 的设置）
        以来的天数。‌当你使用 python-calamine 读取这样的日期时，‌你会得到一个表示天数的数字。‌
        （注意：‌Excel 实际上是从1899年12月30日开始计数的，‌这是一个已知的问题）
        :param get_row_func: 获取数据
        :param ignore_row_func: 忽略函数
        :param from_cell: 从第几行获取数据，第一行是 0
        :param file_path: csv 路径
        :return:
        """
        values = []
        with open(file_path, newline='', encoding='utf-8') as csvfile:
            # 创建 CSV 读取器
            csv_reader = csv.reader(csvfile)
            # 逐行读取
            line_num = 0
            for row in csv_reader:
                if line_num < from_cell:
                    line_num += 1
                    continue
                line_num += 1
                if ignore_row_func and ignore_row_func(row):
                    continue
                cells = get_row_func(row)
                values.append(cells)
        return values
